<!DOCTYPE html>

<html
  xmlns="http://www.w3.org/1999/xhtml"
  >
  <head>
    <title>Barplot &#8211; from Data to Viz</title>

    <meta charset="utf-8" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="generator" content="pandoc" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, shrink-to-fit=no"
    />
    <meta
      name="description"
      content="An extensive description of Barplot. Definition, examples, input data, common caveats, tool to build it and potential alternatives."
    />
    <meta
      name="keywords"
      content="Data,Dataviz,Datavisualization,Plot,Chart,Graph,R,Python,D3,Learning,Caveat,Pitfall,Mistake,Classification"
    />
    <meta name="author" content="Yan Holtz and Conor Healy" />
    <link rel="icon" href="img/logo/data-to-viz.ico" />

    <!-- Control appearance when share by social media -->
    <meta property="og:title" content="Barplot" />
    <meta
      property="og:image"
      content="https://github.com/holtzy/data_to_viz/raw/master/img/section/BarSmall.png"
    />
    <meta
      property="og:description"
      content="An extensive description of Barplot. Definition, examples, input data, common caveats, tool to build it and potential alternatives."
    />
    <meta
      property="og:url"
      content="www.data-to-viz.com/caveat/barplot.html"
    />
    <meta property="og:type" content="website" />

    <style>
      .myheader {
        background-image: url("https://github.com/holtzy/data_to_viz/raw/master/img/overview_RGG_faded.png");
        min-height: 300px;
        background-size: 100% 100%;

        /* Create the parallax scrolling effect */
        background-attachment: fixed;
        background-position: center;
        background-repeat: no-repeat;
        background-size: cover;

        height: 100%;
        width: 100% !important;
      }
      .mytitle {
        text-transform: uppercase;
        font-family: "Montserrat";
        font-size: 200%;
        font-weight: 500;
        letter-spacing: 4px;
      }
    </style>

    <div class="myheader" style="text-align: center">
      <br />
      <a href="http://www.data-to-viz.com"
        ><img
          align="left"
          src="https://github.com/holtzy/data_to_viz/raw/master/img/logo/typo.png"
          style="width: 150px; vertical-align: top; margin-left: 5%"
      /></a>
      <br /><br />
      <br /><br />
      <a href="http://www.data-to-viz.com">
        <img
          src="https://github.com/holtzy/data_to_viz/raw/master/img/section/BarSmall.png"
      /></a>
      <br /><br />
      <p class="mytitle">Barplot</p>
      <p style="color: #d0d0d0">
        <a href="#definition">definition</a> - <a href="#mistake">mistake</a> -
        <a href="#related">related</a> -
        <a href="#code">code</a>
      </p>
    </div>

         <script src="libs/header-attrs-2.27/header-attrs.js"></script>
<script src="libs/jquery-3.6.0/jquery-3.6.0.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="libs/bootstrap-3.3.5/css/lumen.min.css" rel="stylesheet" />
<script src="libs/bootstrap-3.3.5/js/bootstrap.min.js"></script>
<script src="libs/bootstrap-3.3.5/shim/html5shiv.min.js"></script>
<script src="libs/bootstrap-3.3.5/shim/respond.min.js"></script>
<style>h1 {font-size: 34px;}
       h1.title {font-size: 38px;}
       h2 {font-size: 30px;}
       h3 {font-size: 24px;}
       h4 {font-size: 18px;}
       h5 {font-size: 16px;}
       h6 {font-size: 12px;}
       code {color: inherit; background-color: rgba(0, 0, 0, 0.04);}
       pre:not([class]) { background-color: white }</style>
<script src="libs/navigation-1.1/tabsets.js"></script>
<script src="libs/navigation-1.1/codefolding.js"></script>
<link href="libs/pagedtable-1.1/css/pagedtable.css" rel="stylesheet" />
<script src="libs/pagedtable-1.1/js/pagedtable.js"></script>       <style type="text/css">
      code {
        white-space: pre;
      }
    </style>
    <style type="text/css">
      pre > code.sourceCode { white-space: pre; position: relative; }
      pre > code.sourceCode > span { line-height: 1.25; }
      pre > code.sourceCode > span:empty { height: 1.2em; }
      .sourceCode { overflow: visible; }
      code.sourceCode > span { color: inherit; text-decoration: inherit; }
      div.sourceCode { margin: 1em 0; }
      pre.sourceCode { margin: 0; }
      @media screen {
      div.sourceCode { overflow: auto; }
      }
      @media print {
      pre > code.sourceCode { white-space: pre-wrap; }
      pre > code.sourceCode > span { display: inline-block; text-indent: -5em; padding-left: 5em; }
      }
      pre.numberSource code
        { counter-reset: source-line 0; }
      pre.numberSource code > span
        { position: relative; left: -4em; counter-increment: source-line; }
      pre.numberSource code > span > a:first-child::before
        { content: counter(source-line);
          position: relative; left: -1em; text-align: right; vertical-align: baseline;
          border: none; display: inline-block;
          -webkit-touch-callout: none; -webkit-user-select: none;
          -khtml-user-select: none; -moz-user-select: none;
          -ms-user-select: none; user-select: none;
          padding: 0 4px; width: 4em;
          color: #aaaaaa;
        }
      pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
      div.sourceCode
        {   }
      @media screen {
      pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
      }
      code span.al { color: #ff0000; font-weight: bold; } /* Alert */
      code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
      code span.at { color: #7d9029; } /* Attribute */
      code span.bn { color: #40a070; } /* BaseN */
      code span.bu { color: #008000; } /* BuiltIn */
      code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
      code span.ch { color: #4070a0; } /* Char */
      code span.cn { color: #880000; } /* Constant */
      code span.co { color: #60a0b0; font-style: italic; } /* Comment */
      code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
      code span.do { color: #ba2121; font-style: italic; } /* Documentation */
      code span.dt { color: #902000; } /* DataType */
      code span.dv { color: #40a070; } /* DecVal */
      code span.er { color: #ff0000; font-weight: bold; } /* Error */
      code span.ex { } /* Extension */
      code span.fl { color: #40a070; } /* Float */
      code span.fu { color: #06287e; } /* Function */
      code span.im { color: #008000; font-weight: bold; } /* Import */
      code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
      code span.kw { color: #007020; font-weight: bold; } /* Keyword */
      code span.op { color: #666666; } /* Operator */
      code span.ot { color: #007020; } /* Other */
      code span.pp { color: #bc7a00; } /* Preprocessor */
      code span.sc { color: #4070a0; } /* SpecialChar */
      code span.ss { color: #bb6688; } /* SpecialString */
      code span.st { color: #4070a0; } /* String */
      code span.va { color: #19177c; } /* Variable */
      code span.vs { color: #4070a0; } /* VerbatimString */
      code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
            div.sourceCode {
        overflow-x: visible;
      }
          </style>
        <style type="text/css">
      pre:not([class]) {
        background-color: white;
      }
    </style>
           <style type="text/css">
      h1 {
        font-size: 34px;
      }
      h1.title {
        font-size: 38px;
      }
      h2 {
        font-size: 30px;
      }
      h3 {
        font-size: 24px;
      }
      h4 {
        font-size: 18px;
      }
      h5 {
        font-size: 16px;
      }
      h6 {
        font-size: 12px;
      }
      .table th:not([align]) {
        text-align: left;
      }
          </style>
         <link
      rel="stylesheet"
      href="style.css"
      type="text/css"
      
    />
      </head>

  <body>
        <style type="text/css">
      .main-container {
        max-width: 940px;
        margin-left: auto;
        margin-right: auto;
      }
      code {
        color: inherit;
        background-color: rgba(0, 0, 0, 0.04);
      }
      img {
        max-width: 100%;
        height: auto;
      }
      .tabbed-pane {
        padding-top: 12px;
      }
      button.code-folding-btn:focus {
        outline: none;
      }
    </style>

     
    <div class="container-fluid main-container">
      <!-- tabsets -->
      <script>
        $(document).ready(function () {
          window.buildTabsets("TOC");
        });
      </script>

      <!-- code folding -->
            <style type="text/css">
        .code-folding-btn {
          margin-bottom: 4px;
        }
      </style>
      <script>
        $(document).ready(function () {
                          window.initializeCodeFolding("hide" === "show");
                });
      </script>
         
                    <div class="fluid-row" id="header">
                        <div class="btn-group pull-right">
              <button
                type="button"
                class="btn btn-default btn-xs dropdown-toggle"
                data-toggle="dropdown"
                aria-haspopup="true"
                aria-expanded="false"
              >
                <span>Show Code</span> <span class="caret"></span>
              </button>
              <ul class="dropdown-menu" style="min-width: 50px">
                                <li><a id="rmd-show-all-code" href="#">Show All Code</a></li>
                <li><a id="rmd-hide-all-code" href="#">Hide All Code</a></li>
                                </ul>
            </div>

                         </div>

              <div class="mycontent">
<div id="definition" class="section level1">
<h1>Definition</h1>
<hr />
<p>A barplot (or barchart) is one of the most common types of graphic.
It shows the relationship between a numeric and a categoric variable.
Each entity of the categoric variable is represented as a bar. The size
of the bar represents its numeric value. <br></p>
<p>Here is an example showing the quantity of weapons exported by the
top 20 largest exporters in 2017 (more info <a
href="http://www.data-to-viz.com/story/OneNumOneCat.html">here</a>):</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb1-1"><a href="#cb1-1" tabindex="-1"></a><span class="co"># Libraries</span></span>
<span id="cb1-2"><a href="#cb1-2" tabindex="-1"></a><span class="fu">library</span>(tidyverse)</span>
<span id="cb1-3"><a href="#cb1-3" tabindex="-1"></a><span class="fu">library</span>(hrbrthemes)</span>
<span id="cb1-4"><a href="#cb1-4" tabindex="-1"></a><span class="fu">library</span>(kableExtra)</span>
<span id="cb1-5"><a href="#cb1-5" tabindex="-1"></a><span class="fu">options</span>(<span class="at">knitr.table.format =</span> <span class="st">&quot;html&quot;</span>)</span>
<span id="cb1-6"><a href="#cb1-6" tabindex="-1"></a></span>
<span id="cb1-7"><a href="#cb1-7" tabindex="-1"></a><span class="co"># Load dataset from github</span></span>
<span id="cb1-8"><a href="#cb1-8" tabindex="-1"></a>data <span class="ot">&lt;-</span> <span class="fu">read.table</span>(<span class="st">&quot;https://raw.githubusercontent.com/holtzy/data_to_viz/master/Example_dataset/7_OneCatOneNum.csv&quot;</span>, <span class="at">header=</span><span class="cn">TRUE</span>, <span class="at">sep=</span><span class="st">&quot;,&quot;</span>)</span>
<span id="cb1-9"><a href="#cb1-9" tabindex="-1"></a></span>
<span id="cb1-10"><a href="#cb1-10" tabindex="-1"></a><span class="co"># Barplot</span></span>
<span id="cb1-11"><a href="#cb1-11" tabindex="-1"></a>data <span class="sc">%&gt;%</span></span>
<span id="cb1-12"><a href="#cb1-12" tabindex="-1"></a>  <span class="fu">filter</span>(<span class="sc">!</span><span class="fu">is.na</span>(Value)) <span class="sc">%&gt;%</span></span>
<span id="cb1-13"><a href="#cb1-13" tabindex="-1"></a>  <span class="fu">arrange</span>(Value) <span class="sc">%&gt;%</span></span>
<span id="cb1-14"><a href="#cb1-14" tabindex="-1"></a>  <span class="fu">tail</span>(<span class="dv">20</span>) <span class="sc">%&gt;%</span></span>
<span id="cb1-15"><a href="#cb1-15" tabindex="-1"></a>  <span class="fu">mutate</span>(<span class="at">Country=</span><span class="fu">factor</span>(Country, Country)) <span class="sc">%&gt;%</span></span>
<span id="cb1-16"><a href="#cb1-16" tabindex="-1"></a>  <span class="fu">ggplot</span>( <span class="fu">aes</span>(<span class="at">x=</span>Country, <span class="at">y=</span>Value) ) <span class="sc">+</span></span>
<span id="cb1-17"><a href="#cb1-17" tabindex="-1"></a>    <span class="fu">geom_bar</span>(<span class="at">stat=</span><span class="st">&quot;identity&quot;</span>, <span class="at">fill=</span><span class="st">&quot;#69b3a2&quot;</span>) <span class="sc">+</span></span>
<span id="cb1-18"><a href="#cb1-18" tabindex="-1"></a>    <span class="fu">coord_flip</span>() <span class="sc">+</span></span>
<span id="cb1-19"><a href="#cb1-19" tabindex="-1"></a>    <span class="fu">theme_ipsum</span>() <span class="sc">+</span></span>
<span id="cb1-20"><a href="#cb1-20" tabindex="-1"></a>    <span class="fu">theme</span>(</span>
<span id="cb1-21"><a href="#cb1-21" tabindex="-1"></a>      <span class="at">panel.grid.minor.y =</span> <span class="fu">element_blank</span>(),</span>
<span id="cb1-22"><a href="#cb1-22" tabindex="-1"></a>      <span class="at">panel.grid.major.y =</span> <span class="fu">element_blank</span>(),</span>
<span id="cb1-23"><a href="#cb1-23" tabindex="-1"></a>      <span class="at">legend.position=</span><span class="st">&quot;none&quot;</span></span>
<span id="cb1-24"><a href="#cb1-24" tabindex="-1"></a>    ) <span class="sc">+</span></span>
<span id="cb1-25"><a href="#cb1-25" tabindex="-1"></a>    <span class="fu">xlab</span>(<span class="st">&quot;&quot;</span>) <span class="sc">+</span></span>
<span id="cb1-26"><a href="#cb1-26" tabindex="-1"></a>    <span class="fu">ylab</span>(<span class="st">&quot;Weapon quantity (SIPRI trend-indicator value)&quot;</span>)</span></code></pre></div>
<p><img src="barplot_files/figure-html/unnamed-chunk-1-1.png" width="672" style="display: block; margin: auto;" /></p>
</div>
<div id="what-for" class="section level1">
<h1>What for</h1>
<hr />
<p>A barplot shows the relationship between a numeric and a categoric
variable. In the previous graphic, each country is a level of the
categoric variable, and the quantity of weapon sold is the numeric
variable. An <code>ordered</code> barplot is a very good choice here
since it displays both the ranking of countries and their specific
value.</p>
<p><br></p>
<p>A barplot can also display values for
<code>several levels of grouping</code>. In the following graphic, the
number of given baby name is provided by name (level1) and per year
(level2). With this kind of information it is possible to build a
<code>grouped barplot</code>:</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb2-1"><a href="#cb2-1" tabindex="-1"></a><span class="co"># Libraries</span></span>
<span id="cb2-2"><a href="#cb2-2" tabindex="-1"></a><span class="fu">library</span>(tidyverse)</span>
<span id="cb2-3"><a href="#cb2-3" tabindex="-1"></a><span class="fu">library</span>(hrbrthemes)</span>
<span id="cb2-4"><a href="#cb2-4" tabindex="-1"></a><span class="fu">library</span>(babynames)</span>
<span id="cb2-5"><a href="#cb2-5" tabindex="-1"></a><span class="fu">library</span>(viridis)</span>
<span id="cb2-6"><a href="#cb2-6" tabindex="-1"></a></span>
<span id="cb2-7"><a href="#cb2-7" tabindex="-1"></a><span class="co"># Load dataset from github</span></span>
<span id="cb2-8"><a href="#cb2-8" tabindex="-1"></a>data <span class="ot">&lt;-</span> babynames <span class="sc">%&gt;%</span> </span>
<span id="cb2-9"><a href="#cb2-9" tabindex="-1"></a>  <span class="fu">filter</span>(name <span class="sc">%in%</span> <span class="fu">c</span>(<span class="st">&quot;Ashley&quot;</span>, <span class="st">&quot;Amanda&quot;</span>, <span class="st">&quot;Jessica&quot;</span>,    <span class="st">&quot;Patricia&quot;</span>, <span class="st">&quot;Linda&quot;</span>, <span class="st">&quot;Deborah&quot;</span>,   <span class="st">&quot;Dorothy&quot;</span>, <span class="st">&quot;Betty&quot;</span>, <span class="st">&quot;Helen&quot;</span>)) <span class="sc">%&gt;%</span></span>
<span id="cb2-10"><a href="#cb2-10" tabindex="-1"></a>  <span class="fu">filter</span>(sex<span class="sc">==</span><span class="st">&quot;F&quot;</span>)</span>
<span id="cb2-11"><a href="#cb2-11" tabindex="-1"></a></span>
<span id="cb2-12"><a href="#cb2-12" tabindex="-1"></a><span class="co"># A grouped barplot</span></span>
<span id="cb2-13"><a href="#cb2-13" tabindex="-1"></a>data  <span class="sc">%&gt;%</span> </span>
<span id="cb2-14"><a href="#cb2-14" tabindex="-1"></a>  <span class="fu">filter</span>(name <span class="sc">%in%</span> <span class="fu">c</span>(<span class="st">&quot;Ashley&quot;</span>, <span class="st">&quot;Patricia&quot;</span>, <span class="st">&quot;Betty&quot;</span>, <span class="st">&quot;Helen&quot;</span>)) <span class="sc">%&gt;%</span></span>
<span id="cb2-15"><a href="#cb2-15" tabindex="-1"></a>  <span class="fu">filter</span>(year <span class="sc">%in%</span> <span class="fu">c</span>(<span class="dv">1920</span>, <span class="dv">1960</span>, <span class="dv">2000</span>)) <span class="sc">%&gt;%</span></span>
<span id="cb2-16"><a href="#cb2-16" tabindex="-1"></a>  <span class="fu">mutate</span>(<span class="at">year=</span><span class="fu">as.factor</span>(year)) <span class="sc">%&gt;%</span></span>
<span id="cb2-17"><a href="#cb2-17" tabindex="-1"></a>  <span class="fu">ggplot</span>( <span class="fu">aes</span>(<span class="at">x=</span>year, <span class="at">y=</span>n, <span class="at">fill=</span>name)) <span class="sc">+</span></span>
<span id="cb2-18"><a href="#cb2-18" tabindex="-1"></a>    <span class="fu">geom_bar</span>(<span class="at">stat=</span><span class="st">&quot;identity&quot;</span>, <span class="at">position=</span><span class="st">&quot;dodge&quot;</span>) <span class="sc">+</span></span>
<span id="cb2-19"><a href="#cb2-19" tabindex="-1"></a>    <span class="fu">scale_fill_viridis</span>(<span class="at">discrete=</span><span class="cn">TRUE</span>, <span class="at">name=</span><span class="st">&quot;&quot;</span>) <span class="sc">+</span></span>
<span id="cb2-20"><a href="#cb2-20" tabindex="-1"></a>    <span class="fu">theme_ipsum</span>() <span class="sc">+</span></span>
<span id="cb2-21"><a href="#cb2-21" tabindex="-1"></a>    <span class="fu">ylab</span>(<span class="st">&quot;Number of baby&quot;</span>)</span></code></pre></div>
<p><img src="barplot_files/figure-html/unnamed-chunk-2-1.png" width="768" style="display: block; margin: auto;" /></p>
<p>Instead of puting the bars one beside each other it is possible to
stack them, resulting in a stacked barplot:</p>
<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb3-1"><a href="#cb3-1" tabindex="-1"></a><span class="co"># A grouped barplot</span></span>
<span id="cb3-2"><a href="#cb3-2" tabindex="-1"></a>data  <span class="sc">%&gt;%</span> </span>
<span id="cb3-3"><a href="#cb3-3" tabindex="-1"></a>  <span class="fu">filter</span>(name <span class="sc">%in%</span> <span class="fu">c</span>(<span class="st">&quot;Ashley&quot;</span>, <span class="st">&quot;Patricia&quot;</span>, <span class="st">&quot;Betty&quot;</span>, <span class="st">&quot;Helen&quot;</span>)) <span class="sc">%&gt;%</span></span>
<span id="cb3-4"><a href="#cb3-4" tabindex="-1"></a>  <span class="fu">filter</span>(year <span class="sc">%in%</span> <span class="fu">c</span>(<span class="dv">1920</span>, <span class="dv">1960</span>, <span class="dv">2000</span>)) <span class="sc">%&gt;%</span></span>
<span id="cb3-5"><a href="#cb3-5" tabindex="-1"></a>  <span class="fu">mutate</span>(<span class="at">year=</span><span class="fu">as.factor</span>(year)) <span class="sc">%&gt;%</span></span>
<span id="cb3-6"><a href="#cb3-6" tabindex="-1"></a>  <span class="fu">ggplot</span>( <span class="fu">aes</span>(<span class="at">x=</span>year, <span class="at">y=</span>n, <span class="at">fill=</span>name)) <span class="sc">+</span></span>
<span id="cb3-7"><a href="#cb3-7" tabindex="-1"></a>    <span class="fu">geom_bar</span>(<span class="at">stat=</span><span class="st">&quot;identity&quot;</span>, <span class="at">width =</span> <span class="fl">0.5</span>) <span class="sc">+</span></span>
<span id="cb3-8"><a href="#cb3-8" tabindex="-1"></a>    <span class="fu">scale_fill_viridis</span>(<span class="at">discrete=</span><span class="cn">TRUE</span>, <span class="at">name=</span><span class="st">&quot;&quot;</span>) <span class="sc">+</span></span>
<span id="cb3-9"><a href="#cb3-9" tabindex="-1"></a>    <span class="fu">theme_ipsum</span>() <span class="sc">+</span></span>
<span id="cb3-10"><a href="#cb3-10" tabindex="-1"></a>    <span class="fu">ylab</span>(<span class="st">&quot;Number of baby&quot;</span>)</span></code></pre></div>
<p><img src="barplot_files/figure-html/unnamed-chunk-3-1.png" width="768" style="display: block; margin: auto;" /></p>
</div>
<div id="variation" class="section level1">
<h1>Variation</h1>
<hr />
<p>Barplot is sometimes described as a boring way to visualize
information, despite its incredible efficiency. There are a few
variations that allows to create more eye-catching figures without
loosing any of the barplot accuracy. My favorite variation is the
lollipop plot that replaces the bars with a segment and a dot. It
results in a less cluttered figure that is often more attractive:</p>
<div class="sourceCode" id="cb4"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb4-1"><a href="#cb4-1" tabindex="-1"></a><span class="co"># Load dataset from github</span></span>
<span id="cb4-2"><a href="#cb4-2" tabindex="-1"></a>data <span class="ot">&lt;-</span> <span class="fu">read.table</span>(<span class="st">&quot;https://raw.githubusercontent.com/holtzy/data_to_viz/master/Example_dataset/7_OneCatOneNum.csv&quot;</span>, <span class="at">header=</span><span class="cn">TRUE</span>, <span class="at">sep=</span><span class="st">&quot;,&quot;</span>)</span>
<span id="cb4-3"><a href="#cb4-3" tabindex="-1"></a></span>
<span id="cb4-4"><a href="#cb4-4" tabindex="-1"></a><span class="co"># Plot</span></span>
<span id="cb4-5"><a href="#cb4-5" tabindex="-1"></a>data <span class="sc">%&gt;%</span></span>
<span id="cb4-6"><a href="#cb4-6" tabindex="-1"></a>  <span class="fu">filter</span>(<span class="sc">!</span><span class="fu">is.na</span>(Value)) <span class="sc">%&gt;%</span></span>
<span id="cb4-7"><a href="#cb4-7" tabindex="-1"></a>  <span class="fu">arrange</span>(Value) <span class="sc">%&gt;%</span></span>
<span id="cb4-8"><a href="#cb4-8" tabindex="-1"></a>  <span class="fu">mutate</span>(<span class="at">Country=</span><span class="fu">factor</span>(Country, Country)) <span class="sc">%&gt;%</span></span>
<span id="cb4-9"><a href="#cb4-9" tabindex="-1"></a>  <span class="fu">ggplot</span>( <span class="fu">aes</span>(<span class="at">x=</span>Country, <span class="at">y=</span>Value) ) <span class="sc">+</span></span>
<span id="cb4-10"><a href="#cb4-10" tabindex="-1"></a>    <span class="fu">geom_segment</span>( <span class="fu">aes</span>(<span class="at">x=</span>Country ,<span class="at">xend=</span>Country, <span class="at">y=</span><span class="dv">0</span>, <span class="at">yend=</span>Value), <span class="at">color=</span><span class="st">&quot;grey&quot;</span>) <span class="sc">+</span></span>
<span id="cb4-11"><a href="#cb4-11" tabindex="-1"></a>    <span class="fu">geom_point</span>(<span class="at">size=</span><span class="dv">3</span>, <span class="at">color=</span><span class="st">&quot;#69b3a2&quot;</span>) <span class="sc">+</span></span>
<span id="cb4-12"><a href="#cb4-12" tabindex="-1"></a>    <span class="fu">coord_flip</span>() <span class="sc">+</span></span>
<span id="cb4-13"><a href="#cb4-13" tabindex="-1"></a>    <span class="fu">theme_ipsum</span>() <span class="sc">+</span></span>
<span id="cb4-14"><a href="#cb4-14" tabindex="-1"></a>    <span class="fu">theme</span>(</span>
<span id="cb4-15"><a href="#cb4-15" tabindex="-1"></a>      <span class="at">panel.grid.minor.y =</span> <span class="fu">element_blank</span>(),</span>
<span id="cb4-16"><a href="#cb4-16" tabindex="-1"></a>      <span class="at">panel.grid.major.y =</span> <span class="fu">element_blank</span>(),</span>
<span id="cb4-17"><a href="#cb4-17" tabindex="-1"></a>      <span class="at">legend.position=</span><span class="st">&quot;none&quot;</span></span>
<span id="cb4-18"><a href="#cb4-18" tabindex="-1"></a>    ) <span class="sc">+</span></span>
<span id="cb4-19"><a href="#cb4-19" tabindex="-1"></a>    <span class="fu">xlab</span>(<span class="st">&quot;&quot;</span>)</span></code></pre></div>
<p><img src="barplot_files/figure-html/unnamed-chunk-4-1.png" width="672" style="display: block; margin: auto;" /></p>
<p>Circular barplot can also be considered if you have many groups. The
group comparison is less accurate, thus this option must be selected if
there is an obvious pattern to show in the data.</p>
<div class="sourceCode" id="cb5"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb5-1"><a href="#cb5-1" tabindex="-1"></a><span class="co"># Load dataset from github</span></span>
<span id="cb5-2"><a href="#cb5-2" tabindex="-1"></a>data <span class="ot">&lt;-</span> <span class="fu">read.table</span>(<span class="st">&quot;https://raw.githubusercontent.com/holtzy/data_to_viz/master/Example_dataset/7_OneCatOneNum.csv&quot;</span>, <span class="at">header=</span><span class="cn">TRUE</span>, <span class="at">sep=</span><span class="st">&quot;,&quot;</span>)</span>
<span id="cb5-3"><a href="#cb5-3" tabindex="-1"></a></span>
<span id="cb5-4"><a href="#cb5-4" tabindex="-1"></a><span class="co"># Order data</span></span>
<span id="cb5-5"><a href="#cb5-5" tabindex="-1"></a>tmp <span class="ot">&lt;-</span> data <span class="sc">%&gt;%</span></span>
<span id="cb5-6"><a href="#cb5-6" tabindex="-1"></a>  <span class="fu">filter</span>(<span class="sc">!</span><span class="fu">is.na</span>(Value)) <span class="sc">%&gt;%</span></span>
<span id="cb5-7"><a href="#cb5-7" tabindex="-1"></a>  <span class="fu">arrange</span>(<span class="fu">desc</span>(Value)) <span class="sc">%&gt;%</span></span>
<span id="cb5-8"><a href="#cb5-8" tabindex="-1"></a>  <span class="fu">mutate</span>(<span class="at">Country=</span><span class="fu">factor</span>(Country, Country))</span>
<span id="cb5-9"><a href="#cb5-9" tabindex="-1"></a></span>
<span id="cb5-10"><a href="#cb5-10" tabindex="-1"></a><span class="co"># Set a number of &#39;empty bar&#39;</span></span>
<span id="cb5-11"><a href="#cb5-11" tabindex="-1"></a>empty_bar<span class="ot">=</span><span class="dv">10</span></span>
<span id="cb5-12"><a href="#cb5-12" tabindex="-1"></a></span>
<span id="cb5-13"><a href="#cb5-13" tabindex="-1"></a><span class="co"># Add lines to the initial tmpset</span></span>
<span id="cb5-14"><a href="#cb5-14" tabindex="-1"></a>to_add <span class="ot">=</span> <span class="fu">matrix</span>(<span class="cn">NA</span>, empty_bar, <span class="fu">ncol</span>(tmp))</span>
<span id="cb5-15"><a href="#cb5-15" tabindex="-1"></a><span class="fu">colnames</span>(to_add) <span class="ot">=</span> <span class="fu">colnames</span>(tmp)</span>
<span id="cb5-16"><a href="#cb5-16" tabindex="-1"></a>tmp<span class="ot">=</span><span class="fu">rbind</span>(tmp, to_add)</span>
<span id="cb5-17"><a href="#cb5-17" tabindex="-1"></a>tmp<span class="sc">$</span>id<span class="ot">=</span><span class="fu">seq</span>(<span class="dv">1</span>, <span class="fu">nrow</span>(tmp))</span>
<span id="cb5-18"><a href="#cb5-18" tabindex="-1"></a></span>
<span id="cb5-19"><a href="#cb5-19" tabindex="-1"></a><span class="co"># Get the name and the y position of each label</span></span>
<span id="cb5-20"><a href="#cb5-20" tabindex="-1"></a>label_tmp<span class="ot">=</span>tmp</span>
<span id="cb5-21"><a href="#cb5-21" tabindex="-1"></a>number_of_bar<span class="ot">=</span><span class="fu">nrow</span>(label_tmp)</span>
<span id="cb5-22"><a href="#cb5-22" tabindex="-1"></a>angle<span class="ot">=</span> <span class="dv">90</span> <span class="sc">-</span> <span class="dv">360</span> <span class="sc">*</span> (label_tmp<span class="sc">$</span>id<span class="fl">-0.5</span>) <span class="sc">/</span>number_of_bar     <span class="co"># I substract 0.5 because the letter must have the angle of the center of the bars. Not extreme right(1) or extreme left (0)</span></span>
<span id="cb5-23"><a href="#cb5-23" tabindex="-1"></a>label_tmp<span class="sc">$</span>hjust<span class="ot">&lt;-</span><span class="fu">ifelse</span>( angle <span class="sc">&lt;</span> <span class="sc">-</span><span class="dv">90</span>, <span class="dv">1</span>, <span class="dv">0</span>)</span>
<span id="cb5-24"><a href="#cb5-24" tabindex="-1"></a>label_tmp<span class="sc">$</span>angle<span class="ot">&lt;-</span><span class="fu">ifelse</span>(angle <span class="sc">&lt;</span> <span class="sc">-</span><span class="dv">90</span>, angle<span class="sc">+</span><span class="dv">180</span>, angle)</span>
<span id="cb5-25"><a href="#cb5-25" tabindex="-1"></a>label_tmp<span class="sc">$</span>Country <span class="ot">&lt;-</span> <span class="fu">gsub</span>(<span class="st">&quot;United States&quot;</span>, <span class="st">&quot;US&quot;</span>, label_tmp<span class="sc">$</span>Country)</span>
<span id="cb5-26"><a href="#cb5-26" tabindex="-1"></a>label_tmp<span class="sc">$</span>Country <span class="ot">&lt;-</span> <span class="fu">paste</span>(label_tmp<span class="sc">$</span>Country, <span class="st">&quot; (&quot;</span>, label_tmp<span class="sc">$</span>Value,<span class="st">&quot;)&quot;</span>, <span class="at">sep=</span><span class="st">&quot;&quot;</span>)</span>
<span id="cb5-27"><a href="#cb5-27" tabindex="-1"></a></span>
<span id="cb5-28"><a href="#cb5-28" tabindex="-1"></a><span class="co"># Make the plot</span></span>
<span id="cb5-29"><a href="#cb5-29" tabindex="-1"></a><span class="fu">ggplot</span>(tmp, <span class="fu">aes</span>(<span class="at">x=</span><span class="fu">as.factor</span>(id), <span class="at">y=</span>Value)) <span class="sc">+</span>       <span class="co"># Note that id is a factor. If x is numeric, there is some space between the first bar</span></span>
<span id="cb5-30"><a href="#cb5-30" tabindex="-1"></a>  <span class="fu">geom_bar</span>(<span class="at">stat=</span><span class="st">&quot;identity&quot;</span>, <span class="at">fill=</span><span class="fu">alpha</span>(<span class="st">&quot;#69b3a2&quot;</span>, <span class="fl">0.8</span>)) <span class="sc">+</span></span>
<span id="cb5-31"><a href="#cb5-31" tabindex="-1"></a>  <span class="fu">ylim</span>(<span class="sc">-</span><span class="dv">7000</span>,<span class="dv">13000</span>) <span class="sc">+</span></span>
<span id="cb5-32"><a href="#cb5-32" tabindex="-1"></a>  <span class="fu">theme_minimal</span>() <span class="sc">+</span></span>
<span id="cb5-33"><a href="#cb5-33" tabindex="-1"></a>  <span class="fu">theme</span>(</span>
<span id="cb5-34"><a href="#cb5-34" tabindex="-1"></a>    <span class="at">axis.text =</span> <span class="fu">element_blank</span>(),</span>
<span id="cb5-35"><a href="#cb5-35" tabindex="-1"></a>    <span class="at">axis.title =</span> <span class="fu">element_blank</span>(),</span>
<span id="cb5-36"><a href="#cb5-36" tabindex="-1"></a>    <span class="at">panel.grid =</span> <span class="fu">element_blank</span>(),</span>
<span id="cb5-37"><a href="#cb5-37" tabindex="-1"></a>    <span class="at">plot.margin =</span> <span class="fu">unit</span>(<span class="fu">rep</span>(<span class="sc">-</span><span class="dv">1</span>,<span class="dv">4</span>), <span class="st">&quot;cm&quot;</span>) </span>
<span id="cb5-38"><a href="#cb5-38" tabindex="-1"></a>  ) <span class="sc">+</span></span>
<span id="cb5-39"><a href="#cb5-39" tabindex="-1"></a>  <span class="fu">coord_polar</span>(<span class="at">start =</span> <span class="dv">0</span>) <span class="sc">+</span> </span>
<span id="cb5-40"><a href="#cb5-40" tabindex="-1"></a>  <span class="fu">geom_text</span>(<span class="at">data=</span>label_tmp, <span class="fu">aes</span>(<span class="at">x=</span>id, <span class="at">y=</span>Value<span class="sc">+</span><span class="dv">200</span>, <span class="at">label=</span>Country ), <span class="at">color=</span><span class="st">&quot;black&quot;</span>, <span class="at">fontface=</span><span class="st">&quot;bold&quot;</span>,<span class="at">alpha=</span><span class="fl">0.6</span>, <span class="at">size=</span><span class="fl">2.5</span>, <span class="at">angle=</span> label_tmp<span class="sc">$</span>angle, <span class="at">hjust=</span>label_tmp<span class="sc">$</span>hjust, <span class="at">inherit.aes =</span> <span class="cn">FALSE</span> ) <span class="sc">+</span></span>
<span id="cb5-41"><a href="#cb5-41" tabindex="-1"></a>  <span class="fu">geom_text</span>( <span class="fu">aes</span>(<span class="at">x=</span><span class="dv">24</span>, <span class="at">y=</span><span class="dv">8000</span>, <span class="at">label=</span><span class="st">&quot;Who sells more weapons?&quot;</span>), <span class="at">color=</span><span class="st">&quot;black&quot;</span>, <span class="at">inherit.aes =</span> <span class="cn">FALSE</span>, <span class="at">data =</span> <span class="fu">data.frame</span>())</span></code></pre></div>
<p><img src="barplot_files/figure-html/unnamed-chunk-5-1.png" width="768" style="display: block; margin: auto;" /></p>
</div>
<div id="mistake" class="section level1">
<h1>Common mistakes</h1>
<hr />
<ul>
<li><p>Do not confound barchart with <a
href="https://www.data-to-viz.com/graph/histogram.html">histogram</a>. A
histogram has only a numeric variable as input and shows its
distribution.</p></li>
<li><p><a href="http://www.data-to-viz.com/caveat/order_data.html">Order
your bars</a>. If the levels of your categoric variable have no obvious
order, order the bars following their values.</p></li>
<li><p>Several values per group? <a
href="http://www.data-to-viz.com/caveat/error_bar.html">Don’t use a
barplot</a>. Even with error bars, it hides information and other type
of graphic like <a
href="https://www.data-to-viz.com/caveat/boxplot.html">boxplot</a> or <a
href="https://www.data-to-viz.com/graph/violin.html">violin</a> are much
more appropriate.</p></li>
</ul>
</div>
<div id="related" class="section level1">
<h1>Related</h1>
<hr />
<div class="row">
<div class="col-lg-3 col-md-6 col-sm-6">
<a href="http://www.data-to-viz.com/graph/lollipop.html" class="btn btn-primary mybtnrelated" style="margin-bottom:4px;white-space: normal !important;">
<img  src="https://github.com/holtzy/data_to_viz/raw/master/img/section/LollipopSmall.png">
<p class="mytitlerelated">
Lollipop plot
</p>
<p class="mytextrelated">
A fancy barplot where bars are replaced with a dot and a segment. Try it
and adopt it.
</p>
</a>
</div>
<div class="col-lg-3 col-md-6 col-sm-6">
<a href="http://www.data-to-viz.com/graph/circularbarplot.html" class="btn btn-primary mybtnrelated" style="margin-bottom:4px;white-space: normal !important;">
<img  src="https://github.com/holtzy/data_to_viz/raw/master/img/section/CircularBarplotSmall.png">
<p class="mytitlerelated">
Circular barplot
</p>
<p class="mytextrelated">
A barplot where the bars are displayed in a circular way. It is useful
when you have many groups.
</p>
</a>
</div>
<div class="col-lg-3 col-md-6 col-sm-6">
<a href="http://www.data-to-viz.com/graph/wordcloud.html" class="btn btn-primary mybtnrelated" style="margin-bottom:4px;white-space: normal !important;">
<img  src="https://github.com/holtzy/data_to_viz/raw/master/img/section/WordCloudSmall.png">
<p class="mytitlerelated">
Wordcloud
</p>
<p class="mytextrelated">
A visual representation of text data, where word size is relative to
their frequency.
</p>
</a>
</div>
<div class="col-lg-3 col-md-6 col-sm-6">
<a href="http://www.data-to-viz.com/graph/barplot.html" class="btn btn-primary mybtnrelated" style="margin-bottom:4px;white-space: normal !important;">
<img  src="https://github.com/holtzy/data_to_viz/raw/master/img/section/BarSmall.png">
<p class="mytitlerelated">
Barplot
</p>
<p class="mytextrelated">
A barplot is one of the most common types of graphic. It shows the
relationship between a numeric and a categoric variable.
</p>
</a>
</div>
</div>
</div>
<div id="code" class="section level1">
<h1>Build your own</h1>
<hr />
<p>The <a href="https://r-graph-gallery.com/barplot.html">R</a>, <a
href="https://python-graph-gallery.com/barplot/">Python</a>, <a
href="https://www.react-graph-gallery.com/barplot">React</a> and <a
href="https://d3-graph-gallery.com/barplot.html">D3</a> graph galleries
are 4 websites providing hundreds of chart example, always providing the
reproducible code. Click the button below to see how to build the chart
you need with your favorite programing language.</p>
<p>
<a href="https://r-graph-gallery.com/barplot.html/" class="btn btn-primary">R
graph gallery</a>
<a href="https://python-graph-gallery.com/barplot/" class="btn btn-primary">Python
gallery</a>
<a href="https://www.react-graph-gallery.com/barplot" class="btn btn-primary">React
gallery</a>
<a href="https://d3-graph-gallery.com/barplot.html" class="btn btn-primary">D3
gallery</a>
</p>
</div>
</div>

          <section
            id="form"
            style="
              margin-top: 70px;
              padding-bottom: 70px;
              padding-top: 70px;
              background-color: #f8f9fa;
            "
          >
            <div class="container">
              <div
                style="
                  display: flex;
                  flex-direction: column;
                  align-items: center;
                "
              >
                <h2 style="font-size: 44px" class="text-center">
                  Dataviz decision tree
                </h2>
                <p
                  class="text-center"
                  style="max-width: 600px; font-size: 18px"
                >
                  <a href="https://www.data-to-viz.com">Data To Viz</a> is a
                  comprehensive <b>classification of chart types</b> organized
                  by data input format. Get a high-resolution version of our
                  decision tree delivered to your inbox now!
                </p>
                <div
                  style="
                    margin-top: -50px;
                    width: 100%;
                    display: flex;
                    justify-content: center;
                  "
                >
                  <script
                    async
                    data-uid="8010f15fd2"
                    src="https://prodigious-trailblazer-3628.ck.page/8010f15fd2/index.js"
                  ></script>
                </div>
                <br />
                <div class="text-center">
                  <img
                    class="img-fluid"
                    src="../img/poster/poster_small.png"
                    alt="High Resolution Poster"
                    style="max-width: 400px"
                  />
                </div>
              </div>
            </div>
          </section>

           &nbsp;
<hr />
<p style="text-align: center;">A work by <a href="https://www.yan-holtz.com/">Yan Holtz</a> for <a href="https://data-to-viz.com">data-to-viz.com</a></p>

<!-- Add icon library -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

<!-- Add font awesome icons -->
<p style="text-align: center;">
	<a href="https://twitter.com/r_graph_gallery?lang=en" class="fa fa-twitter"></a>
	<a href="https://www.linkedin.com/in/yan-holtz-2477534a/" class="fa fa-linkedin"></a>
	<a href="https://github.com/holtzy/" class="fa fa-github"></a>
</p>

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-79254642-3"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-79254642-3');
</script>
<script>
var getOutboundLink = function(url) {
	gtag('event', 'click', {
		'event_category': 'outbound',
		'event_label': url,
		'transport_type': 'beacon',
		'event_callback': function(){document.location = url;}
	});
}
</script>

&nbsp;                </div>

    <script>

      // add bootstrap table styles to pandoc tables
      function bootstrapStylePandocTables() {
        $('tr.header').parent('thead').parent('table').addClass('table table-condensed');
      }
      $(document).ready(function () {
        bootstrapStylePandocTables();
      });

          </script>
       </body>
</html>
